package com.example.orderservice.utils;

/**
 * 当前用户ID持有者
 * 基于ThreadLocal实现线程隔离的当前用户ID存储
 *
 * @author czwa
 */
public class CurrentHoler {
    // 线程本地存储对象，用于保存当前用户ID
    private static final ThreadLocal<Integer> CURRENT_LOCAL = new ThreadLocal<>();

    /**
     * 设置当前用户ID到线程本地存储
     *
     * @param id 用户ID
     */
    public static void set(Integer id) {
        CURRENT_LOCAL.set(id);
    }

    /**
     * 获取当前线程存储的用户ID
     *
     * @return 当前用户ID，若无则返回null
     */
    public static Integer getCurrentId() {
        return CURRENT_LOCAL.get();
    }

    /**
     * 移除当前线程存储的用户ID
     * 用于防止内存泄漏，通常在请求处理完成后调用
     */
    public static void remove() {
        CURRENT_LOCAL.remove();
    }
}